### Artigo: Por que s�o convocadas as audi�ncias p�blicas no STF?
### Autores: Marjorie Corr�a Marona, Mateus Morais Ara�jo  e Lucas Fernandes de Magalh�es
### C�digos utilizados para gerar os resultados das Tabelas 1, 2 e 3 do artigo.

library(tidyverse)
library(rio)
library(lubridate)
library(gdata)
library(Zelig)
library(stargazer)
library(MVar.pt)


##################
##################

rm(list=ls())
options(scipen=999)

###
setwd() #Definir o caminho da pasta em que se encontram os arquivos baixados

bd <- import("base.xlsx") 

bd$num <- as.numeric(bd$num)

bd2 <- import("base_teste_robustez.rda") 


##################
####CORRELA��O####
##################


####Correla��o...nao � t�o alta, de modo que nao justifica usar um PCA
names(bd)
cor(bd[,c("total_noticia_antes_convoc","total_pet_am_curiae_antes_convoc", "total_partes")],use = "complete.obs")


#################
####Descritivas##
#################

total_proc <- nrow(bd)


###Tabela de distribuidos e AP
g1 <- bd %>% count(ano_inicio, ap_cod) %>% 
  group_by(ano_inicio) %>% 
  mutate(prop=100*n/sum(n))

###Exportar a Tabela 1
export(estatisticas, "tabela1_estatisticas.xlsx")


#Estatisticas de partes
total_partes <- bd %>% group_by(ap_cod) %>% 
  summarise(media=mean(total_partes, na.rm=T),
            dp=sd(total_partes, na.rm=T)) %>% 
  mutate(id="partes")

#Estatisticas de am curiae
total_am_curiae <- bd %>% group_by(ap_cod) %>% 
  summarise(media=mean(total_pet_am_curiae_antes_convoc, na.rm=T),
            dp=sd(total_pet_am_curiae_antes_convoc, na.rm=T)) %>% 
  mutate(id="pet_am_curiae")

#Estatisticas de noticias
total_noticia <- bd %>% group_by(ap_cod) %>% 
  summarise(media=mean(total_noticia_antes_convoc, na.rm=T),
            dp=sd(total_noticia_antes_convoc, na.rm=T)) %>% 
  mutate(id="noticia_antes_convoc")

estatisticas <- rbind(total_partes,total_am_curiae,total_noticia)

##Exportar a tabela 2
export(estatisticas, "tabela2_estatisticas.xlsx")

################
#####MODELO#####
################

bd <- bd %>% 
  mutate(ano_inicio=as.factor(ano_inicio))

#reg1
reg1 <- glm(ap_cod ~ total_pet_am_curiae_antes_convoc, data=bd, family=binomial)

summary(reg1)
exp(coef(reg1))


#reg2
reg2 <- glm(ap_cod ~ total_noticia_antes_convoc, data=bd, family=binomial)

summary(reg2)
exp(coef(reg2))



#reg3
reg3 <- glm(ap_cod ~ total_partes, data=bd, family=binomial)

summary(reg3)
exp(coef(reg3))

#reg4
reg4 <- glm(ap_cod ~ total_pet_am_curiae_antes_convoc + total_noticia_antes_convoc+
              total_partes, data=bd, family=binomial)

summary(reg4)
exp(coef(reg4))

#reg5
reg5 <- glm(ap_cod ~ total_pet_am_curiae_antes_convoc + total_noticia_antes_convoc+
              total_partes  + as.factor(ano_inicio), data=bd, family=binomial)

summary(reg5)
exp(coef(reg5))

#reg6
reg6 <- glm(ap_cod ~ total_pet_am_curiae_antes_convoc + total_noticia_antes_convoc+
              total_partes  +  as.factor(ano_inicio)+
              relator, data=bd, family=binomial)

summary(reg6)
exp(coef(reg6))

#reg7
reg7 <- glm(ap_cod ~ total_pet_am_curiae_antes_convoc + total_noticia_antes_convoc+
              total_partes  +  as.factor(ano_inicio)+
              relator+classe, data=bd, family=binomial)

summary(reg7)
exp(coef(reg7))

stargazer(reg1,reg2,reg3,reg4,reg5,reg6,reg7,
         type="html",out="regressao.doc")

#Modelo com ajuste para eventos raros
reg_ajuste <- zelig(ap_cod ~ total_pet_am_curiae_antes_convoc+ total_noticia_antes_convoc+
                total_partes+
                  as.factor(ano_inicio)+
                relator+
                classe, model="relogit",
              bias.correct=TRUE,
              cite=FALSE,
              data=bd)

summary(reg_ajuste)
exp(coef(reg_ajuste))

##########################################
#######Teste da hip�tese de robustez######
##########################################

teste <- data.frame()

a <- unique(bd2$tempo_ate_convoc)
a <- a[is.na(a)==F]


for(i in 1:length(a)){
  print(i)
  temp <- bd2 %>% filter(is.na(tempo_ate_convoc)|
                           tempo_ate_convoc==a[i])
  
  temp$classe <- bd$classe[match(temp$id,bd$id)]
  
  reg <- glm(ap_cod ~ total_pet_am_curiae_antes_convoc + total_noticia_antes_convoc+
                total_partes  +  as.factor(ano_inicio)+
                relator+classe, data=temp, family=binomial)
  
  tab <- data.frame(coef=c(reg$coefficients[2],reg$coefficients[3]),
                    p_valor=c(coef(summary(reg))[2,4],
                              coef(summary(reg))[3,4]))

  teste <- rbind(teste,tab)
}



